﻿using LM.InterfacesFabricas.Basicos.Enumeradores;
using LM.InterfacesFabricas.DTOs;
using LM.InterfacesFabricas.Excecoes;
using LM.InterfacesFabricas.Fabricas;
using LM.InterfacesFabricas.Interfaces.Servicos;
using NUnit.Framework;

namespace LM.TesteUnitario
{
    [TestFixture]
    class TestesServicoDeVeiculo
    {
        private IServicoDeVeiculo _servicoDeVeiculo;

        [SetUp]
        public void SetUp()
        {
            _servicoDeVeiculo = FabricaGenerica.Crie<IServicoDeVeiculo>();
        }

        [TestFixtureTearDown]
        public void TestFixtureTearDown()
        {
            LimpeDados();
        }

        [Test]
        public void TesteCadastreComSucesso()
        {
            LimpeDados();
            var marca = new DtoMarca() {Codigo = 1, Descricao = "Ford"};
            var modelo = new DtoModelo() {Codigo = 1, Descricao = "Fiesta", Marca = marca};
            
            var dtoVeiculo = new DtoVeiculo { Codigo = 999, 
            Placa = "XXX1111", Ano = 2013, Cor = "Prata", Modelo = modelo, TipoDeVeiculo = EnumTipoDeVeiculo.Carro};

            _servicoDeVeiculo.Cadastre(dtoVeiculo);
        }

        private void LimpeDados()
        {
            var servicoDeVeiculo = FabricaGenerica.Crie<IServicoDeVeiculo>();

            var Veiculo = servicoDeVeiculo.Consulte(999);
            if (Veiculo != null)
            {
                servicoDeVeiculo.Exclua(Veiculo.Codigo);
            }
        }
    }
}
